package com.bdqn.tour.dao;

import com.bdqn.tour.pojo.HzyHotel;
import com.bdqn.tour.pojo.HzyOrder;
import com.bdqn.tour.pojo.HzyScenicSpot;
import com.bdqn.tour.pojo.HzyTickets;

import java.util.List;

/**
 * 订单信息
 */
public interface HzyOrdersDao {
    /**
     * 查询所有的酒店订单
     *
     * @return 酒店信息
     */
    List<HzyOrder> getAllHotelOrders();

    /**
     * 查询所有的景点订单
     *
     * @return 景点信息
     */
    List<HzyOrder> getAllScenicOrders();

    /**
     * 查询所有的门票订单
     *
     * @return 门票信息
     */
    List<HzyOrder> getAllTicketOrders();

    /**
     * 获取所有的订单
     *
     * @return 订单信息
     */
    List<HzyOrder> getAllOrders();

    /**
     * 删除酒店订单
     *
     * @param id 订单ID
     * @return 是否删除成功
     */
    boolean deleteHotelOrder(Long id);

    /**
     * 删除景点订单
     *
     * @param id 订单ID
     * @return 是否删除成功
     */
    boolean deleteScenicOrder(Long id);

    /**
     * 删除车票订单
     *
     * @param id 订单ID
     * @return 是否删除成功
     */
    boolean deleteTicketOrder(Long id);

    /**
     * 更新酒店订单
     *
     * @param hotel 酒店订单信息
     * @return 是否更新成功
     */
    boolean updateHotelOrder(HzyHotel hotel);

    /**
     * 更新景点订单
     *
     * @param scenicSpot 景点订单信息
     * @return 是否更新成功
     */
    boolean updateScenicOrder(HzyScenicSpot scenicSpot);

    /**
     * 更新车票订单
     *
     * @param ticket 车票订单信息
     * @return 是否更新成功
     */
    boolean updateTicketOrder(HzyTickets ticket);

    /**
     * 获取最近的订单(每种类型取前2条)
     *
     * @return 订单列表
     */
    List<HzyOrder> getRecentOrders();

    /**
     * 更新酒店订单支付状态
     * @param orderId 订单ID
     * @param status 支付状态
     * @return 是否更新成功
     */
    boolean updateHotelPayStatus(String orderId, String status);

    /**
     * 获取订单支付状态数量
     * @return 订单支付数量
     */
    int getStatusCount();


}
